using System;

namespace ns20
{
	internal struct Struct26
	{
		private const short short_0 = 7;

		public int int_0;

		public int int_1;

		public int int_2;

		public int int_3;

		public int int_4;

		public int int_5;

		public int int_6;

		public int int_7;

		public int int_8;

		public Enum13 enum13_0;

		private string string_0;

		private int int_9;

		private static readonly int[] int_10;

		private static readonly int int_11;

		private static readonly int int_12;

		private static readonly int int_13;

		private static readonly int int_14;

		private static readonly int int_15;

		private static readonly int int_16;

		private static readonly int int_17;

		private static readonly int int_18;

		private static readonly int int_19;

		private static readonly int int_20;

		private static readonly int int_21;

		private static readonly int int_22;

		private static readonly int int_23;

		private static readonly int int_24;

		private static readonly int int_25;

		static Struct26()
		{
			int_10 = new int[7] { -1, 10, 100, 1000, 10000, 100000, 1000000 };
			int_11 = "yyyy".Length;
			int_12 = "yyyy-".Length;
			int_13 = "yyyy-MM".Length;
			int_14 = "yyyy-MM-".Length;
			int_15 = "yyyy-MM-dd".Length;
			int_16 = "yyyy-MM-ddT".Length;
			int_17 = "HH".Length;
			int_18 = "HH:".Length;
			int_19 = "HH:mm".Length;
			int_20 = "HH:mm:".Length;
			int_21 = "HH:mm:ss".Length;
			int_22 = "-".Length;
			int_23 = "-zz".Length;
			int_24 = "-zz:".Length;
			int_25 = "-zz:zz".Length;
		}

		public bool method_0(string string_1)
		{
			string_0 = string_1;
			int_9 = string_1.Length;
			if (method_1(0) && method_7(int_15, 'T') && method_2(int_16))
			{
				return true;
			}
			return false;
		}

		private bool method_1(int int_26)
		{
			if (method_5(int_26, out int_0) && 1 <= int_0 && method_7(int_26 + int_11, '-') && method_6(int_26 + int_12, out int_1) && 1 <= int_1 && int_1 <= 12 && method_7(int_26 + int_13, '-') && method_6(int_26 + int_14, out int_2) && 1 <= int_2)
			{
				return int_2 <= DateTime.DaysInMonth(int_0, int_1);
			}
			return false;
		}

		private bool method_2(int int_26)
		{
			if (method_3(ref int_26))
			{
				return method_4(int_26);
			}
			return false;
		}

		private bool method_3(ref int int_26)
		{
			if (method_6(int_26, out int_3) && int_3 < 24 && method_7(int_26 + int_17, ':') && method_6(int_26 + int_18, out int_4) && int_4 < 60 && method_7(int_26 + int_19, ':') && method_6(int_26 + int_20, out int_5) && int_5 < 60)
			{
				int_26 += int_21;
				if (method_7(int_26, '.'))
				{
					int_6 = 0;
					int num = 0;
					while (++int_26 < int_9 && num < 7)
					{
						int num2 = string_0[int_26] - 48;
						if (num2 < 0 || num2 > 9)
						{
							break;
						}
						int_6 = int_6 * 10 + num2;
						num++;
					}
					if (num < 7)
					{
						if (num == 0)
						{
							return false;
						}
						int_6 *= int_10[7 - num];
					}
				}
				return true;
			}
			return false;
		}

		private bool method_4(int int_26)
		{
			if (int_26 < int_9)
			{
				char c = string_0[int_26];
				if (c != 'Z' && c != 'z')
				{
					if (int_26 + 5 < int_9 && method_6(int_26 + int_22, out int_7) && int_7 <= 99 && method_7(int_26 + int_23, ':') && method_6(int_26 + int_24, out int_8) && int_8 <= 99)
					{
						switch (c)
						{
						case '+':
							enum13_0 = Enum13.LocalEastOfUtc;
							int_26 += int_25;
							break;
						case '-':
							enum13_0 = Enum13.LocalWestOfUtc;
							int_26 += int_25;
							break;
						}
					}
				}
				else
				{
					enum13_0 = Enum13.Utc;
					int_26++;
				}
			}
			return int_26 == int_9;
		}

		private bool method_5(int int_26, out int int_27)
		{
			if (int_26 + 3 < int_9)
			{
				int num = string_0[int_26] - 48;
				int num2 = string_0[int_26 + 1] - 48;
				int num3 = string_0[int_26 + 2] - 48;
				int num4 = string_0[int_26 + 3] - 48;
				if (0 <= num && num < 10 && 0 <= num2 && num2 < 10 && 0 <= num3 && num3 < 10 && 0 <= num4 && num4 < 10)
				{
					int_27 = ((num * 10 + num2) * 10 + num3) * 10 + num4;
					return true;
				}
			}
			int_27 = 0;
			return false;
		}

		private bool method_6(int int_26, out int int_27)
		{
			if (int_26 + 1 < int_9)
			{
				int num = string_0[int_26] - 48;
				int num2 = string_0[int_26 + 1] - 48;
				if (0 <= num && num < 10 && 0 <= num2 && num2 < 10)
				{
					int_27 = num * 10 + num2;
					return true;
				}
			}
			int_27 = 0;
			return false;
		}

		private bool method_7(int int_26, char char_0)
		{
			if (int_26 < int_9)
			{
				return string_0[int_26] == char_0;
			}
			return false;
		}
	}
}
